home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows (5th Edition) / Programming Windows, 5th ed. - Companion CD (097-0002183)(1999).iso / Chap16 / Fader / Fader.c next >
Encoding:
C/C++ Source or Header  |  1998-10-09  |  1.9 KB  |  80 lines

  1. /*--------------------------------------
  2.    FADER.C -- Palette Animation Demo
  3.               (c) Charles Petzold, 1998
  4.   --------------------------------------*/
  5.  
  6. #include <windows.h>
  7.  
  8. #define ID_TIMER 1
  9.  
  10. TCHAR szAppName [] = TEXT ("Fader") ;
  11. TCHAR szTitle   [] = TEXT ("Fader: Palette Animation Demo") ;
  12.  
  13. static LOGPALETTE lp ;
  14.  
  15. HPALETTE CreateRoutine (HWND hwnd)
  16. {
  17.      HPALETTE hPalette ;
  18.      
  19.      lp.palVersion             = 0x0300 ;
  20.      lp.palNumEntries          = 1 ;
  21.      lp.palPalEntry[0].peRed   = 255 ;
  22.      lp.palPalEntry[0].peGreen = 255 ;
  23.      lp.palPalEntry[0].peBlue  = 255 ;
  24.      lp.palPalEntry[0].peFlags = PC_RESERVED ;
  25.    
  26.      hPalette = CreatePalette (&lp) ;
  27.      
  28.      SetTimer (hwnd, ID_TIMER, 50, NULL) ;
  29.      return hPalette ;
  30. }
  31.  
  32. void PaintRoutine (HDC hdc, int cxClient, int cyClient)
  33. {
  34.      static TCHAR szText [] = TEXT (" Fade In and Out ") ;
  35.      int          x, y ;
  36.      SIZE         sizeText ;
  37.  
  38.      SetTextColor (hdc, PALETTEINDEX (0)) ;
  39.      GetTextExtentPoint32 (hdc, szText, lstrlen (szText), &sizeText) ;
  40.  
  41.      for (x = 0 ; x < cxClient ; x += sizeText.cx)
  42.      for (y = 0 ; y < cyClient ; y += sizeText.cy)
  43.      {
  44.           TextOut (hdc, x, y, szText, lstrlen (szText)) ;
  45.      }
  46.      return ;
  47. }
  48.  
  49. void TimerRoutine (HDC hdc, HPALETTE hPalette)
  50. {
  51.      static BOOL bFadeIn = TRUE ;
  52.  
  53.      if (bFadeIn)
  54.      {
  55.           lp.palPalEntry[0].peRed   -= 4 ;
  56.           lp.palPalEntry[0].peGreen -= 4 ;
  57.  
  58.           if (lp.palPalEntry[0].peRed == 3)
  59.                bFadeIn = FALSE ;
  60.      }
  61.      else
  62.      {
  63.           lp.palPalEntry[0].peRed   += 4 ;
  64.           lp.palPalEntry[0].peGreen += 4 ;
  65.  
  66.           if (lp.palPalEntry[0].peRed == 255)
  67.                bFadeIn = TRUE ;
  68.      }
  69.  
  70.      AnimatePalette (hPalette, 0, 1, lp.palPalEntry) ;
  71.      return ;
  72. }
  73.  
  74. void DestroyRoutine (HWND hwnd, HPALETTE hPalette)
  75. {
  76.      KillTimer (hwnd, ID_TIMER) ;
  77.      DeleteObject (hPalette) ;
  78.      return ;
  79. }
  80.